package main

import (
	"fmt"
	"math/rand"
)

// 打印九九乘法表。如果可以要求间隔均匀
func multiplication(n int) {
	for i := 1; i <= n; i++ {
		for j := 1; j <= i; j++ {
			fmt.Printf("%d*%d=%d ", j, i, j*i)
		}
		fmt.Println()
	}
}

// 随机生成20以内的20个非0正整数，打印出来。对生成的数值，第单数个（不是索引）累加求和，第偶数个累乘求积。打印结果
func randSum(n int, m int) {
	var odd int
	var even = 1
	intSlice := make([]int, 0, n)
	for i := 0; i < n; i++ {
		intSlice = append(intSlice, rand.Intn(m-1)+1)
	}

	for i, v := range intSlice {
		if (i+1)&1 == 1 {
			odd += v
		} else {
			even *= v
		}
	}
	fmt.Printf("20以内的20个随机非0正整数: %v\n奇数和: %d\n偶数积: %d\n", intSlice, odd, even)
}

// 打印100以内的斐波那契数列
func fib(n int) {
	a, b := 1, 1
	fmt.Printf("%d以内的斐波那契数列:第%d项 值=%v\n", n, 1, a)
	fmt.Printf("%d以内的斐波那契数列:第%d项 值=%v\n", n, 2, b)
	for i := 3; i <= n; i++ {
		a, b = b, a+b
		fmt.Printf("%d以内的斐波那契数列:第%d项 值=%v\n", n, i, b)
	}
}

func main() {
	multiplication(9)
	randSum(20, 20)
	fib(100)
}

// 批改意见
// 1. 随机数中，奇偶判断有误，应该是根据索引+1 的值来判断，而不是根据随机数自身的奇偶来判断。
// 2. 斐波那契数列中，要求是数列中100以内的值，而不是第100个值
